﻿using System;
using log4net;

namespace curbside.Log
{
    /// <summary>
    /// 程序进行日志记录的公用类，定义了三种日志的记录情况
    /// 一、程序中的一些基本信息。名称：InfoLogger
    /// 二、程序中的异常信息。        名称：ErrorLogger
    /// 三、程序中的Debug信息。名称：DebugLogger
    /// </summary>
    public class BaseLog
    {
        static ILog infoLog = null;
        /// <summary>
        /// 记录一些基本的信息
        /// </summary>
        private static ILog InfoLog
        {
            get
            {
                if (infoLog == null)
                {
                    infoLog = LogFactory.GetLogger("InfoLogger");
                }

                return infoLog;
            }
        }

        static ILog errorLog = null;
        /// <summary>
        /// 记录异常信息
        /// </summary>
        private static ILog ErrorLog
        {
            get
            {
                if (errorLog == null)
                {
                    errorLog = LogFactory.GetLogger("ErrorLogger");
                }

                return errorLog;
            }
        }

        static ILog debugLog = null;
        /// <summary>
        /// 记录程序的调试信息
        /// </summary>
        private static ILog DebugLog
        {
            get
            {
                if (debugLog == null)
                {
                    debugLog = LogFactory.GetLogger("DebugLogger");
                }

                return debugLog;
            }
        }

        /// <summary>
        /// 记录程序中的一些基本信息
        /// </summary>
        /// <param name="obj">需要记录的信息</param>
        public static void Info(object obj)
        {
            InfoLog.Info(obj);
        }

        /// <summary>
        /// 记录程序中的一些基本信息
        /// </summary>
        /// <param name="obj">需要记录的信息</param>
        /// <param name="exp">异常</param>
        public static void Info(object obj, Exception exp)
        {
            InfoLog.Info(obj, exp);
        }

        /// <summary>
        /// 记录程序中的异常信息
        /// </summary>
        /// <param name="obj">需要记录的信息</param>
        public static void Error(object obj)
        {
            ErrorLog.Error(obj);
        }

        /// <summary>
        /// 记录程序中的异常信息
        /// </summary>
        /// <param name="obj">需要记录的信息</param>
        /// <param name="exp">异常</param>
        public static void Error(object obj, Exception exp)
        {
            ErrorLog.Error(obj, exp);
        }

        /// <summary>
        /// 记录程序的调试信息
        /// </summary>
        /// <param name="obj">需要记录的调试信息</param>
        public static void Debug(object obj)
        {
            DebugLog.Debug(obj);
        }

        /// <summary>
        /// 记录程序的调试信息
        /// </summary>
        /// <param name="obj">需要记录的调试信息</param>
        /// <param name="exp">异常</param>
        public static void Debug(object obj, Exception exp)
        {
            DebugLog.Debug(obj, exp);
        }
    }
}
